#include "base.h"
#include "unordered_map"
#include "unordered_set"

// P   A   H   N
// A P L S I I G
// Y   I   R   Q

// P     I    N
// A   L S  I G
// Y A   H R  Q
// P     I    e

class Solution
{
public:
    string convert(string s, int numRows)
    {
        string s1;
        if (numRows == 1)
        {
            return s;
        }
        int bar_len = (numRows - 1) * 2;
        for (int i = 0; i < numRows; i++)
        {
            if (i == 0 || i == (numRows - 1))
            {
                int cnt = 0;
                while ((i + bar_len * cnt) < s.length())
                {
                    s1 += s.at(i + bar_len * cnt);
                    cnt++;
                }
            }
            else
            {
                int cnt = 0;
                bool left = true;

                for (;;)
                {
                    int index = left ? (i + bar_len * cnt) : (bar_len * (cnt + 1) - i);
                    if (index < s.length())
                    {
                        s1 += s.at(index);
                        left = !left;
                        if (left)
                        {
                            cnt++;
                        }
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
        return s1;
    }
};

void main()
{
    Solution sol;
    sol.convert("A", 1);
    // auto a = sol.findMedianSortedArrays(a1, a2);
}